package com.ruge.json;

import com.alibaba.fastjson.JSON;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;
import java.util.Map;


/**
 * 爱丽丝、如歌  创建于 2018/10/27 12:25
 * 说明:  Json工具类
 * 依赖 com.alibaba.fastjson version 1.2.51
 */
public class JsonUtil {
	/**
	 * 实体类转Json
	 *
	 * @param model 实体类
	 * @return json 字符串
	 */
	public static String getJsonByModel(Object model) {
		String result = "";
		if (null != model) {
			result = JSON.toJSONString(model);
		}
		return result;
	}

	/**
	 * List集合转json
	 *
	 * @param list 实体类集合
	 * @return json字符串
	 */
	public static String getJsonByListModel(List<T> list) {
		String result = "";
		if (null != list) {
			result = JSON.toJSONString(list);
		}
		return result;
	}

	/**
	 * @param json  json字符串
	 * @param clazz Class类
	 * @param <T>   Class类的泛型
	 * @return Model实体类
	 */
	public static <T> T getModelByJson(String json, Class<T> clazz) {
		if (StringUtils.isEmpty(json) || clazz == null) {
			return null;
		}
		return JSON.parseObject(json, clazz);
	}

	/**
	 * @param json  json字符串
	 * @param clazz Class类
	 * @param <T>   Class类的泛型
	 * @return Model实体类集合
	 */
	public static <T> List<T> getListModelByJson(String json, Class<T> clazz) {

		return JSON.parseArray(json, clazz);
	}

	/**
	 *
	 * @param json json字符串
	 * @return	返回Map
	 */
	public static Map<String, Object> getMapByJson(String json) {
		if (StringUtils.isEmpty(json)) {
			return null;
		}
		return JSON.parseObject(json, Map.class);
	}
}
